package Guigu1.ExceptionTest;

import java.io.File;
import java.io.FileInputStream;
import java.util.Scanner;

import org.junit.Test;

/*
 * 一、异常体系结构
 * 
 * java.lang.Throwable
 *       |-----java.lang.Error:一般不编写针对性的代码进行处理
 *       |-----java.lang.Exception:可以进行异常的处理
 *           |-------编译时异常（checked）
 *                  |-----IOException
 *                       |----FileNotFoundException
 *                  |-----ClassNotFoundException
 *           |------运行时异常（unchecked）
 *                  |-----NullPointerException
 *                  |-----ArrayIndexOutOfBoundsException
 *                  |-----ClassCastException
 *                  |-----NumberFormatException
 *                  |-----InputMismatchException
 *                  |-----ArithmaticException
 */
public class ExceptionExampleTest {
	//*********************以下是编译时异常************
	@Test
	public void test7()
	{
//		File file = new File("hello.txt");
//		FileInputStream fis = new FileInputStream(file);
//		
//		//int data = file.canRead();
//		while(data!=-1)
//		{
//			System.out.println((char)data);
//			data = fis.read();
//		}
//		fis.close();
	}
	//*********************以下是运行时异常************
	//ArithmaticException
	@Test
	public void test6()
	{
		int a = 10;
		int b = 0;
		System.out.println(a/b);
	}
	//InputMismatchException
	@Test
	public void test5()
	{
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		System.out.println(num);
	}
	//NumberFormatException
	@Test
	public void test4()
	{
		String str = "123";
		str = "abc";
		int num = Integer.parseInt(str);
	}
	//ClassCastException
	@Test
	public void test3()
	{
//		Object obj = new Date();
//		String str = (String)obj;
	}
	//ArrayIndexOutOfBoundsException
	@Test
	public void test2()
	{
		int arr[] = new int[10];
		System.out.println(arr[11]);
	}
	
	//NullPointerException
	@Test
	public void test1()
	{
//		int arr[] = null;
//		System.out.println(arr[1]);
		String str = "abc";
		str =null;
		System.out.println(str.charAt(0));
	}
	
}
